package es.antonio.duarte.abrahamAdmin.dao.hibernate;

import java.util.Collection;
import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Example;

import es.antonio.duarte.abrahamAdmin.dao.CosasDAO;
import es.antonio.duarte.abrahamAdmin.dao.DiarioDAO;
import es.antonio.duarte.abrahamAdmin.model.Cosas;
import es.antonio.duarte.abrahamAdmin.model.Diario;

/**
 * Implementacion del DAO de Cosas con Hibernate.
 * @author Antonio Duarte
 */
public class CosasDAOImpl extends DAOGeneralImpl implements
         CosasDAO {

	/**
	    * Consulta de cosas por cuerpo.
	    * @param cu Cuerpo por el cual se buscaran cosas
	    * @return Lista de cosas que cumplen con el cuerpo del texto (vacia si no hay
	    *         registros)
	    */
	public Collection consultarPorCuerpo(String cu) {
		List resultados = null;
		  Cosas cosas = new Cosas();
	      cosas.setCuerpo(cu);
	      Criteria criterios = getSessionFactory().getCurrentSession().createCriteria(
	    		  Cosas.class);
	      criterios = criterios.add(Example.create(cosas));
	      resultados = criterios.list();
	      return resultados;
	}

	/**
	    * Consulta de cosas por titulo.
	    * @param ti Titulo por el cual se buscaran cosas
	    * @return Lista de cosas que cumplen con el titulo (vacia si no hay
	    *         registros)
	    */
	public Collection consultarPorTitulo(String ti) {
		List resultados = null;
		  Cosas cosas = new Cosas();
		  cosas.setTitulo(ti);
	      Criteria criterios = getSessionFactory().getCurrentSession().createCriteria(
	    		  Cosas.class);
	      criterios = criterios.add(Example.create(cosas));
	      resultados = criterios.list();
	      return resultados;
	}
	
	
	/**
	    * Consulta de diario por fecha.
	    * @param fecha Fecha por la cual se buscaran diarios
	    * @return Lista de diarios que cumplen con la fecha (vacia si no hay
	    *         registros)
	    */
	   public final Collection consultarPorFecha(final Date fecha) {
	      List resultados = null;
	      Cosas cosas = new Cosas();
	      cosas.setFecha(fecha);
	      Criteria criterios = getSessionFactory().getCurrentSession().createCriteria(
	               Cosas.class);
	      criterios = criterios.add(Example.create(cosas));
	      resultados = criterios.list();
	      return resultados;
	   }
	
}
